﻿using System.Web;
using Wedn.Net.UI.Handlers;

namespace Wedn.Net.Web.Handlers
{
    /// <summary>
    /// 加载外链CSS样式表文件
    /// </summary>
    public class LoadStyles : LoadHandler
    {
        /// <summary>
        /// PR方法
        /// </summary>
        /// <param name="context">HttpContext</param>
        public override void ProcessRequest(HttpContext context)
        {
            #region MyRegion
            //_context = context;
            //context.Response.ContentType = "text/css";
            ////context.Response.Cache.SetExpires(DateTime.Now.AddMonths(1));
            ////context.Response.Cache.SetCacheability(HttpCacheability.Public);
            ////context.Response.Status = "304";
            ////context.Response.Cache.SetValidUntilExpires(false);
            //if (context.Request.Headers["If-Modified-Since"] != null && TimeSpan.FromTicks(DateTime.Now.Ticks - DateTime.Parse(context.Request.Headers["If-Modified-Since"]).Ticks).Days < 1)
            //{
            //    //测试代码,在这里会发现,当浏览器返回304状态时,下面的日期并不会输出 
            //    context.Response.Write(DateTime.Now);

            //    context.Response.StatusCode = 304;
            //    context.Response.Headers.Add("Content-Encoding", "gzip");
            //    context.Response.StatusDescription = "Not Modified";
            //}
            //else
            //{
            //    ////输出当前时间 
            //    //context.Response.Write(DateTime.Now);
            //    string load = context.Request.QueryString["load"];
            //    if (load == null)
            //        context.Response.End();
            //    string dir = context.Request.QueryString["dir"] ?? "styles";
            //    string[] styles = load.Split(',');
            //    string pathFormat = "/Content/" + dir + "/{0}.css";
            //    var sbd = new StringBuilder();
            //    foreach (string item in styles)
            //    {
            //        string path = context.Server.MapPath(string.Format(pathFormat, item.Replace('.', '/')));
            //        if (File.Exists(path))
            //            sbd.AppendLine(File.ReadAllText(path, Encoding.UTF8));
            //    }
            //    if (sbd.Length == 0)
            //    {
            //        context.Response.Clear();
            //        context.Response.End();
            //    }
            //    context.Response.Write(sbd.ToString().Replace("../", "../content/"));
            //    //设置客户端缓存状态 
            //    SetClientCaching(DateTime.Now);
            //} 
            #endregion
            context.Response.ContentType = "text/css";
            Load(context);
        }

        ///// <summary>
        ///// 设置客户端缓存
        ///// </summary>
        ///// <param name="lastModified"></param>
        //public void SetClientCaching(DateTime lastModified)
        //{
        //    _context.Response.Cache.SetETag(lastModified.Ticks.ToString());
        //    _context.Response.Cache.SetLastModified(lastModified);
        //    //public 以指定响应能由客户端和共享（代理）缓存进行缓存。 
        //    _context.Response.Cache.SetCacheability(HttpCacheability.Public);
        //    //是允许文档在被视为陈旧之前存在的最长绝对时间。 
        //    _context.Response.Cache.SetMaxAge(new TimeSpan(7, 0, 0, 0));
        //    //将缓存过期从绝对时间设置为可调时间 
        //    _context.Response.Cache.SetSlidingExpiration(true);
        //}
    }
}